package tech.aistar.corejava.day12.map;

import java.util.*;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/7/30 0030
 */
public class MyForMapDemo {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();

        //调用put方法
        //针对key是无序不可重复的.如果有重复的,那么后面的会覆盖前面的
        //这一点需要和hashset进行区分[拒绝添加!]
        map.put(1,"java");
        map.put(2,"python");
        map.put(1,"mysql");//覆盖1 java
        map.put(3,"oracle");
        map.put(4,"redis");

        //map底层是重写了toString方法
        String mapStr = map.toString();
        System.out.println(mapStr);

        System.out.println("===");

        Set<MyEntry<Integer,String>> set = handlerMap(mapStr);


        Iterator<MyEntry<Integer,String>> iter = set.iterator();
        while(iter.hasNext()){
            MyEntry<Integer,String> e = iter.next();
            Integer key = e.getKey();
            String value = e.getValue();
            System.out.println(key+":"+value);
        }

    }

    private static Set<MyEntry<Integer,String>> handlerMap(String mapStr) {
        //创建一个Set集合
        Set<MyEntry<Integer,String>> set = new HashSet<>();

        //{1=mysql, 2=python, 3=oracle, 4=redis}
        //去除{}
        mapStr = mapStr.substring(1,mapStr.length()-1);
        //1=mysql, 2=python, 3=oracle, 4=redis
        System.out.println(mapStr);

        //根据指定的正则来进行切割
        String[] arr = mapStr.split(",");
        /*
           arr -
                1=mysql
                2=python
                3=oracle
                4=redis

         */
        for (String group:arr){
             //继续根据 = 进行切割
            String[] gp = group.trim().split("=");
            //System.out.println(gp[0]+"->"+gp[1]);

            //将这俩个数据封装到容器中 - 对象容器
            //实体类就是用来封装数据的
           // MyEntry entry = new MyEntry(Integer.parseInt(gp[0]),gp[1]);

            MyEntry<Integer,String> entry = new MyEntry<>(Integer.parseInt(gp[0]),gp[1]);

            //放入到set集合中
            set.add(entry);
        }
        return set;
    }
}
